home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SPACE 1
/
SPACE - Library 1 - Volume 1.iso
/
program
/
569
/
scpro241
/
scdoc.txt
< prev
next >
Wrap
Text File
|
1992-04-30
|
22KB
|
505 lines
Simple Computer Professional (SC Pro)
Atari ST Version
by Paul Hruby
(c) 1990, 1991, 1992 Paul Hruby and
Micro Designs Ltd.
Version 2.41 3/24/91
Based on: SC for Macintosh, by Sherman Uitzetter
Applied Intelligence, Irvine, California.
The Simple Computer Professional (known from now on as SC or SC
Pro),is designed to teach beginning programmers about low level
machine language. Its lets the programmer design, test and
finally run very small programs without very much knowledge on
how a computer actually operates. It also shows graphically each
instruction as it is executed.
Parts of the SC Machine
The SC machine is divided up into a number of components:
CPU: The CPU is now called the Micro Designs 69000 CPU.
Memory: Most computers have two types of memory: Primary and
Auxiliary memory. Primary memory is the computer's main memory.
Auxiliary memory are devices such as hard drives, floppy disks
and optical disks that store programs and data outside the
computer's main memory. The SC uses only primary memory asits
place to store computer programs and other data. The SC memory,
unlike modern day computers, stores numbers in decimal digits
rather than in binary digits. This makes its easy to look
directly into memory and see the machine code.
Each decimal number is stored in a address of its own. Only
one instruction may be in each address cell. They may be accessed
directly at any time (Random Access Memory). The SC's memory
addresses are numbered from 0 to 99. Address 0 is considered ROM
and may not be changed. Each address cell can only hold a 3 digit
number at the most. This means the numerical range of values that
may be placed in each memory address cell is between -999 to 999.
The SC's memory is limited to only 100 cells with two digit
numbers as addresses.
Input (IC): This device holds data or program instructions
in what is known as cards. The SC is able to read these cards and
place them in memory. Think of a card as a address cell that can
only into memory. The input device only reads each input card in
sequential order. They can not be randomly accessed (a little
like a tape drive). Input cards may only hold three decimal
digits and a negative sign. The sign is not needed if the number
is positive.
Output (OC): Output cards work the same way as input cards
but they can not be placed into memory. Memory places data into
the output cards in sequential order.
Accumulator (ACCUM): This is the first of the SC's three
general purpose registers. The accumulator is used to preform
math functions. When a number is placed in the accumulator it may
be added to another number in memory, subtracted from a number
number or even have its digits shifted left or right. The
accumulator may also used to test for a negative value.
Instruction Register (IR): This register is a communications
link between memory and the control unit. It holds the current
instruction that the control unit is to execute. The SC uses a
three digit positive number as its instruction. This instruction
is placed (fetched) in to the Instruction Register from memory.
This is done so the control unit knows what the next instruction
is to execute.
Program Counter (PC): The third register on the SC. This
register keeps track of the next program instruction to be
executed. The value that the Program Counter displays is the
address cell of that instruction. After each instruction is
executed, the Program Counter is increamented by one. Hopfully,
there is a instruction in that address cell. It is possible to
change the current program counter to another part of memory.
This is accumplished with the jump instruction.
Control Unit: The Control Unit manages the process of
executing program instructions. The first thing it does is to
fetch or load the instruction that the Program Counter is
pointing to. It then places the instruction in the Instruction
Register. It then increments the Program Counter by one. Next it
decodes the opcode portion of the instruction. The opcode
instruction is the left most digit of the three decimal digit
instruction. For example, the instruction 432 is the instruction
the Control Unit wants to execute. The 4 is the opcode
instruction and 32 is the operand (i.e. value that is to be used
by the instruction). Finally, the control unit will execute the
instruction.
The SC Instrunction Set.
The SC computer has a set of ten instructions. They are as
follows:
Machine Assembly
Language Language Description
Code Code
0 _ _ INP INPut - This instruction copies the
contents of the current input card
into memory address _ _ . It then
advances to the next input card. If
the input card is blank, then it will
advance the input device, set the PC
to zero and stop the processor.
1 _ _ OUT OUTput - This instruction copies the
contents of memory address _ _ and
stores it in the output card. The
output device is then advanced to the
next card.
2 _ _ ADD ADD - This instruction adds the
contents of memory address _ _ to the
current value in the accumulator. The
result is then placed back in the
accumulator.
3 _ _ SUB SUB - This instruction subtracts the
contents of memory address _ _ from
the current value in the accumulator.
The result is then placed back in the
accumulator.
4 _ _ LDA LoaD Accumulator - This instruction
clears the contents of the
accumulator and the copies the
contents of memory address cell _ _
into the accumulator.
5 _ _ STA STore Accumulator - The instruction
copies the least significant three
digits of the accumulator into
address cell _ _ .
6 _ _ JMP JuMP - This instruction copies the
present value of the PC into memory
address 99. It then changes the PC to
_ _ .
7 _ _ TAC Test ACcumulator - If the accumulator
is a negative number then change the
PC to _ _ .
8 x y SHF SHiFt - Shift the accumulator left x
number of digits and then shift the
accumulator right y number of digits.
If all left shifts, zeros enter on
the right. If all right shifts, zeros
zeros enter on the left.
9 _ _ HLT HaLT - Set the PC to _ _ and then
stop execution of the program.
How to use SC Pro.
SC Pro will run on any Atari ST, STe or TT with at
least 512K of free memory and a color monitor. It will run with
any version of TOS from 1.0 to 1.6. I have not been able to test
it on a Mega STe or TT, but I don't see why it would not work.
The computer must be set to medium resolution before running SC Pro.
Once the SC Pro icon is displayed in the desktop window, move the
mouse over to it and double click the icon.
Once loaded, you will be presented with main computer
screen. In it you will find the right half of the screen is taken
up by the SC's main memory. Each cell is numbered from 0 to 99. A
____ means there is nothing in the cell. Programs and data are
stored here.
On the left side of the screen, on the top is the SC's
registers. This holds the Accumulator (ACCUM: ), Instruction
Register (IR: ), and finally the Program Counter (PC: ).
The box directly below the registers is the Status box.
Certain pieces of information will be displayed in this box. It
will also ask you for information at times.
Directly below the Status Box is the Input and Output cards
box. The first eight input and output cards are displayed
initaly. This box can be made to display other i/o cards by using
the show input or show output from the menu bar. As a program
enters values into the input or output cards, their appropriate
window will scroll to display the current card.
In the bottom right hand corner of the screen, the current
number of free memory cells is displayed. This is your free RAM
gadge.
At the top there is a menu bar that holds all of the
controls and tools of the SC machine. Each item on the menu bar
has a keyboard equivalent printed next to it.
Desk:
About SC Pro - Keyboard equivalent: "A". This displays the
name of the program, the version number, the programmer's name
and a copyright notice.
File:
Load - Keyboard equivalent: "R". This option allows you to
load a saved SC program from disk. The fileselector box will come
up. Specify the drive, path and filename that the program is
saved under. SC programs have a extention of .SC .
Save - Keyboard equivalent: "W". This options saves the
current SC program in memory to disk. It also saves the input and
output cards. When the fileselector box comes up, specify the
drive, path and filename to save the program under. SC programs
have a extention of .SC .
Print - Keyboard equivalent: "P". This option sends the
contents of memory, input and output cards to a attached printer.
Make sure the printer is on-line before continuing. It only
prints address cells or cards that have something in them. It will
also print the assembly code next to each memory instruction.
Execute - Keyboard equivalent: "E". This option runs the
program entered into memory. Before execution beings, SC will ask
for the starting PC to begin execution at. If the current PC is ok,
press return and SC will use it, otherwise enter the value and press
return. If you do not want to run your program at this time, press the
right mouse button or "(" key on the keyboard. Once the PC is entered,
SC will continue execution until the program is halted or an error
occures.
Step - Keyboard equivalent: "T". This option alows you to
trace through the program as it executes. After each instruction
is executed the program will wait for either the space bar to be
pressed or the left mouse button to be clicked.
Clear CPU - Keyboard equivalent: "C". This options allows
the user to erase memory and input & output cards with one
function. The user is given a warning before all data is erased.
Memory and the input & output cards may be erased one by one with
clear memory, clear input or clear output.
Clear Registers - Keyboard equivalent: "Z". This option allows the
user to reset the PC or the Accumulator and Instruction Register
back to zero.
Set Speed - Keyboard equivalent: "S". This option allows the
user to vary the speed of program execution. When this command is
selected, a dialog box comes up. Press a box 1-4 to vary the
speed. (1 is the slowest, 4 is the fastest). SC Pro is initially
set to the fastest speed. Press Ok to leave the dialog box. The
user may also use the keyboard to change the speed.
Quit - Keyboard equivalent: "Q". This command leaves SC Pro
and returns you to the desktop.
Memory:
Load Memory - Keyboard equivalent: "M". This function allows
the user to enter a program and/or data into the SC's main
memory. When this function is used, the screen will blank out and
display the current contents of memory. It will then ask the user
for the starting memory location to enter data at. After that the
user may enter program instructions one by one, hitting return
after each instruction. Memory cells may be deleted by pressing
return at the prompt for data. Pressing ( or the right mouse
button will exit the load memory routine and return the user
to the main SC Pro screen.
Clear Memory - Keyboard equivalent: "V". This command will
erase the contents of the SC's main memory. The user is given a
warning before the main memory bits the dust in order to back
out.
Input:
Load Input - Keyboard equivalent: "X". This function allows
the user to enter data or program instructions into input cards.
When this function is used, the screen will blank out and will
display the current contents of the input cards. It will then ask
the user for the starting input card to enter data at. After that
the user may enter data or even program instructions into the
input cards one by one. Press return after each piece of data.
Input cards may be deleted by pressing return at the prompt for
data. Pressing ( or the right mouse button will exit the load
input routine and return the user to the main SC Pro screen.
Clear Input - Keyboard equivalent: "B". This function will
erase the contents of the SC's input cards. The user is given a
warning before the cards are trashed.
Show Input - Keyboard equivalent: "I". This function allows
the user to display a different portion of the input cards. It
will ask the user for a value from 0 to 92. Entering a value will
display that input card and the next seven input cards in the
input card window. Entering 92 will display input cards from 92
to 99. The last 8 input cards.
Output:
Clear Output - Keyboard equivalent: "N". This function will
erase the contents of the SC's output cards. The user is, of
course, given a warning before the cards are vaporized.
Show Output - Keyboard equivalent: "O". This function allows
the user to display a differenet portion of the output cards. It
will ask the user for a vlaue from 0 to 92. Entering a value will
display that output card and the next seven output cards in the
output card window. Entering 92 will display output cards from 92
to 99. The last 8 output cards.
HELP!:
The online help is divided into three sections, the SC command set,
the menu bar and finally, the keypad. You may use the mouse or the
+ and - keys to page forward or back. Use the mouse or press return
to quit.
The Keypad:
When SC Pro needs a value from you it will bring up a keypad on the
screen. Use the left mouse button to press each key. The keyboard
may also be used to input values into SC Pro. If you input a number
that you don't want, press the CLR or * key to clear it and start over.
If you would like to delete a value in a cell, press return by itself
and the value will be cleared. To stop entering values into cells,
press either the right mouse button or ( on the keyboard.
Sample Programs:
Here are a few sample programs to test out you new toy.
Addition - This program will add two numbers together and put the
result in the output cards. (The contents is the machine language
instructions, mnemoniecs are the english equivalents)
MEMORY:
ADDRESS CONTENTS MNEMONIECS COMMENTS
20 040 INP 40 ;Address 40 get first #
21 041 INP 41 ;Address 41 get second #
22 440 LDA 40 ;Load accum with address 40
23 241 ADD 41 ;Add address 41 to accum.
24 542 STA 42 ;store accum in address 42
25 142 OUT 42 ;put address 42 in output cards
26 920 HLT 20 ;Stop the program & set PC to 20
INPUT CARDS:
CARD NO. CONTENTS
0 15 ;first number to be added
1 25 ;second number to be added
Division - This program wil divide two numbers.
MEMORY:
ADDRESS CONTENTS MNEMONICES COMMENTS
20 804 SHF 0,4 ;zero out accum
21 534 STA 34 ;set quotient to zero
22 035 INP 35 ;read in dividend into M
23 036 INP 36 ;read in divisor into N
24 435 LDA 35 ;load in M into accum
25 336 SUB 36 ;subtract N from M
26 732 TAC 32 ;if accum<0 goto cell 32
27 535 STA 35 ;store reduced dividend
28 434 LDA 34 ;load previous quotent
29 200 ADD 00 ;add one to quotent
30 534 STA 34 ;store quotent back in Q
31 624 JMP 24 ;jump back to cell 24
32 134 OUT 34 ;output quotent
33 900 HLT 00 ;Halt & reset PC to zero
34 ;Q - The quotient
35 ;M - The dividend
36 ;N - The divisor
INPUT CARDS:
CARD NO. CONTENTS COMMENTS
0 10 ;dividend M
1 5 ;divisor N
Also included in this lzh file are a number of programs to test the
SC with. Just set the PC to the starting instruction and being. I
believe they all have a starting PC of 20. Finally, I am including
two NeoDesk 3 icons for SC Pro and it's program files.
Update Histroy
SC Pro 1.0 - Was a menu driven text based version of SC Pro. It had
options to load memory and input cards. It could display memory, i/o
and registers at any time. Finally, it could execute any program.
SC Pro 2.0 - Gem based version. This was an exact dublicate of SC for
the Macintosh. This version was written as a final class project in a
machine language class I took. Got an "A"!
SC Pro 2.2 - This version added a dialog box to place data into
memory and input cards. Before, it was just a text based input
system.
SC Pro 2.4 - In past versions, SC Pro had to completely redraw the
screen when ever something changed. 2.4 now only changes whatever
needs to be updated. This version also added a better load and save
routine that would give error messages. Finally, this version saves
the current desktop colors and restores them when quiting. It also
checks for enough free memory to run and checks for medium res.
SC Pro 2.41 - This version takes care of a few small bugs in the
shifting command and other places. Load and save now remember the
current disk path and displays a hour glass during disk access.
Known bugs:
Every so often, SC Pro will display bold characters when things are
written to the screen. Once this bold characters are updated, the
display get messed up. I blame GFA Basic 2.0 for having such a losely
way of mixing text with graphics for this. If this happens, save what
you are doing, exit to the desktop and re-run SC Pro. This should take
care of it. SC Pro is currently being rewritten in a combination of C
and Pascal to fix this problem and add a little speed. As always
please report any bugs to the address below or leave E-mail on GEnie.
Future Plans:
1. Version 2.6 will hopefully be out RSN. <HA! HA!> It will
allow SC Pro to be expanded just like a "real" computer. You can add
things like the following:
-- Extended memory - You can add 99 cell memory pages to the SC
and be able to bank switch amoung them.
-- Graphics card - You will be able to do simple turtle graphics
in four colors.
-- Sound card - At least three sound channels. Maybe even through
the STe's audio ports.
-- Math Co-processor - Will allow SC Pro to multiply, divide and
other math functions without writting it yourself.
-- MD69010 CPU - This new CPU will have a number of general
registers, stack, pointer and other options.
2. I am working on improving the graphical interface to include more
windows, dialog boxes and sliders.
3. Version 2.6 will also run in high res!
These enhancements can and will only happen if you make yourself a
registered user. So far, I have 76 registered users and three schools
across the country. Lets try and make it an even 100! See below for
more details.
Copyright Information
SC Pro (SCPRO241.PRG), all SC programs included in this LZH file,
(ABS.SC, ADD.SC, BOOTSTRP.SC, DIVIDE.SC, LDEXECT.SC, MAX_NUM.SC,
MULTIPLY.SC and SHIFTING.SC), SC Pro NeoDesk 3 icons (SC.NIC), and the
documentation (SCDOC.TXT) are:
Copyright = 1990, 1991, 1992 Paul Hruby and Micro Designs Ltd.
All rights reserved.
SC Pro is distributed as SHAREWARE. This means that you are free
(under the conditions explained below) to give copies of the program
to friends, upload it to bulletin boards, etc. If you end up using the
program, you are expected to become a registered user by sending a
shareware payment of at least $15.00 to:
Paul Hruby
100 Aberdeen Drive, Box #237
Riverside, Ca. 92507
Shareware can a feasible alternative to the normal means of
distribution; but it will only work if you do send in your
registration fee. So if you'd like to see further updates to SC Pro
and other useful shareware programs, your support will make a
difference!
If you have suggestions for improving SC Pro, your opinions will carry
more weight if you're registered; You can reach me at the above
address.
If you would like an acknowledgement that I've received your
registration fee, please include a self-addressed stamped envelope
along with your payment.
SC Pro may be freely distributed as long as all of the above-mentioned
files are included, and as long as none of the files are altered in
any way whatsoever. The program may not be sold or included with a
commerical product without the express written consent of the author.
Also, this documentation may not be reprinted without the express
written consent of the author.
SC Pro 2.41
Paul Hruby
100 Aberdeen Drive, Box £ 237
Riverside, Ca. 92507
GEnie E-mail: P.HRUBY
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SC Pro